#ifndef _HTTP_CODE_INCLUDED
#define _HTTP_CODE_INCLUDED

/* Informational - 1xx */
#define HTTPC_CONTINUE			100
#define HTTPC_SWITCHING_PROCTOCOL	101

/* Successful - 2xx */
#define HTTPC_OK			200
#define HTTPC_CREATED			201
#define HTTPC_ACCEPTED			202
#define HTTPC_NON_AUTHORITATIVE		203
#define HTTPC_NO_CONTENT		204
#define HTTPC_RESET_CONTENT		205
#define HTTPC_PARTIAL_CONTENT		206
// our code. Make the HTTP_working_thread_func keep the fd open after HTTP handler return. 
#define HTTPC_LIVESTREAM_CONTENT	210

/* Rediection - 3xx */
#define HTTPC_MULTIPLE_CHOICES		300
#define HTTPC_MOVED			301
#define HTTPC_FOUND			302
#define HTTPC_SEE_OTHER			303
#define	HTTPC_NOT_MODIFIED		304
#define HTTPC_USE_PROXY			305
#define HTTPC_306_NOTUSED		306	
#define HTTPC_REDIRECT_TEMPORARY	307

/* Client Error */
#define HTTPC_BAD_REQUEST		400
#define HTTPC_UNAUTHORIZED		401
#define HTTPC_PAYMENT_REQUIRED		402	// reserved
#define HTTPC_FORBIDDEN			403
#define HTTPC_NOT_FOUND			404
#define HTTPC_METHOD_NOT_ALLOWED	405
#define HTTPC_NOT_ACCEPTABLE		406
#define HTTPC_NEED_PROXY_AUTHENTICATION 407
#define HTTPC_REQUEST_TIMEOUT		408
#define HTTPC_CONFLICT			409
#define HTTPC_GONE			410
#define HTTPC_LENGTH_REQUIRED		411
#define HTTPC_PRECONDITION_FAILED	412
#define HTTPC_TOO_LARGE			413	// requested entities is too large
#define HTTPC_URI_TOO_LONG		414
#define HTTPC_MEDIA_UNSUPPORTED		415
#define HTTPC_OUT_OF_RANGE		416
#define HTTPC_EXPECTATION_FAILED	417

/* Server error */
#define HTTPC_INTERNAL_ERROR		500
#define HTTPC_NOT_IMPLEMENTED		501
#define HTTPC_BAD_GATEWAY		502
#define HTTPC_OUT_OF_SERVICE		503
#define HTTPC_GATEWAY_TIMEOUT		504
#define HTTPC_VERSION_NOT_SUPPORTED	505

#endif
